Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pepka

Package Overview
Dependencies
Maintainers
0
Versions
105
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pepka

An ultra lightweight, async or unsafe-speedy ramda alternative.

  • 1.6.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
78
increased by25.81%
Maintainers
0
Weekly downloads
 
Created
Source

image

HI! Meet pepka - JavaScript/TypeScript functional programming utility library named after my parakeet.

This lib is intended to be a functional toolkit more flexible than ramda is. Its' basic API is similimar to ramda's one. Other goals are:

  • Async pipes. They are very handy, but are not 100% pure in terms of Haskell c:
  • Most flexible types possible (Let'em be any better than crashing because of their failures. I'm currently working on full JSDocs and better basic types).
  • Tree-shakeble and smallest possible. What could be native, is native.
  • Has "quick" alternatives of most computation-heavy functions with q prefix which are not completely safe by fp means: most of them do mutations and it may be needed to clone or cloneShallow data in a first pipe of compose(...).
  • Has basic toolbelt-types like AnyObject and AnyFunc<ReturnType?, [...args]?> etc.
  • Has some basic additinal must-have stuff that ramda does not.

Full docs are coming, please reference ramda's ones for most operations and examples: https://ramdajs.com/docs/

Basic API differences:

  • clone() clones deeply as possible any type possible.
  • cloneShallow() clones only by 1st level of folding also any type possible.
  • mergeDeep - replaces arrays.
    • mergeDeepX - replaces its' elements with same indexes.
    • mergeDeepAdd - adds new elements to arrays.
  • type - returns type UpperCased of anything passed to it, including classes and typed arrays.
  • mapKeys - changes existing keys and data by map or function like usual mapper.
  • explore(label)(data) - compose(explore('the number'))(42) results in 'the number', 42 in console passing by the data.
  • genBy(generator(index), length) - generates arrays.
  • sizeof(array or object) - counts indexes of it.
  • Aliases: mirror, reflect, echo = identity.
  • Quicks: qappend, qassoc, qreduce, qmergeDeep, qmergeDeepX, qmergeDeepAdd, qmapKeys, qfilter

Async APIs:

  • composeAsync - waits for a Promise if emitted by a pipe inside it.
  • waitAll = Promise.all
  • forEachAsync - runs a handler with all elements passed in parallel.
  • forEachSerial - waits for a previous handler to resolve if Promise emitted.

Keywords

FAQs

Package last updated on 23 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc